package ontprocessing_temp;

import com.hp.hpl.jena.ontology.DatatypeProperty;
import com.hp.hpl.jena.vocabulary.XSD;

public interface LayerConstant {
	public String ontPrefix = 
       	"PREFIX gleen:<java:edu.washington.sig.gleen.>"+
    	"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+ 
    	"PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>"+
    	"PREFIX geo:<http://www.w3.org/2003/01/geo/wgs84_pos#>"+
    	"PREFIX fn:<http://www.w3.org/2005/xpath-functions#>"+ 
    	"PREFIX wdm:<http://geni-orca.renci.org/owl/dtn.owl#>"+
    	"PREFIX ethernet:<http://geni-orca.renci.org/owl/ethernet.owl#>"+
    	"PREFIX owl2xml:<http://www.w3.org/2006/12/owl2-xml#>"+ 
    	"PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>"+
    	"PREFIX ndl:<http://geni-orca.renci.org/owl/topology.owl#>"+
    	"PREFIX location:<http://geni-orca.renci.org/owl/location.owl#>"+
    	"PREFIX layer:<http://geni-orca.renci.org/owl/layer.owl#>"+
    	"PREFIX topology:<http://geni-orca.renci.org/owl/topology.owl#>"+
    	"PREFIX collections:<http://geni-orca.renci.org/owl/collections.owl#>"+
    	"PREFIX request:<http://geni-orca.renci.org/owl/request.owl#>"+
    	"PREFIX dtn:<http://geni-orca.renci.org/owl/dtn.owl#>"+
    	"PREFIX ethernet:<http://geni-orca.renci.org/owl/ethernet.owl#>"+
    	"PREFIX compute:<http://geni-orca.renci.org/owl/compute.owl#>"+
    	"PREFIX storage:<http://geni-orca.renci.org/owl/storage.owl#>"+
    	"PREFIX orca:<http://geni-orca.renci.org/owl/storage.owl#>"+
    	"PREFIX domain:<http://geni-orca.renci.org/owl/domain.owl#>"+
    	"PREFIX ip4:<http://geni-orca.renci.org/owl/ip4.owl#>";
	
	public static final String rootURL="http://geni-orca.renci.org/owl/";
	
	public enum ConnectionType {crossconnect, link, subnetwork, network};
	
	public enum Direction {UNIDirectional, BIDirectional};
	
	public enum Prefix {wdm,ethernet};
	
	public enum LabelP {strand,ocg,wavelength,vlan};
	
	public enum Action {Temporary, VLANtag, CRS, Delete};
	
	public enum AvailableLabelSet {availableOCGSet, availableLambdaSet, available25GSet, availableVLANSet};
	public enum UsedLabelSet {usedOCGSet, usedLambdaSet, used25GSet, usedVLANSet};
	
	public enum Layer {
		EthernetNetworkElement (3,Prefix.ethernet,Action.VLANtag,AvailableLabelSet.availableVLANSet,UsedLabelSet.usedVLANSet,LabelP.vlan), 
		LambdaNetworkElement (2,Prefix.wdm,Action.CRS,AvailableLabelSet.available25GSet,UsedLabelSet.used25GSet,LabelP.wavelength),
		OCGNetworkElement (1,Prefix.wdm,Action.CRS,AvailableLabelSet.availableLambdaSet,UsedLabelSet.usedLambdaSet,LabelP.ocg),
		FiberNetworkElement (0,Prefix.wdm,Action.CRS,AvailableLabelSet.availableOCGSet,UsedLabelSet.usedOCGSet,LabelP.strand);
		
		private final int rank;
		private final Prefix prefix;
		private final Action action;
		private final AvailableLabelSet aSet;
		private final UsedLabelSet uSet;
		private final LabelP label;
		Layer(int rank, Prefix prefix,Action action, AvailableLabelSet aSet, UsedLabelSet uSet, LabelP label){
			this.rank=rank;
			this.prefix=prefix;
			this.action=action;
			this.aSet=aSet;
			this.uSet=uSet;
			this.label=label;
		}
		public int rank(){return rank;};
		public Prefix getPrefix(){return prefix;};
		public Action getAction(){return action;};
		public AvailableLabelSet getASet(){return aSet;};
		public UsedLabelSet getUSet(){return uSet;};
		public LabelP getLabelP(){return label;};
	};
	
	public enum AdaptationProperty{
		OCG("OCG"),
		WDM("WDM"),
		TenGbaseR("TenGbase-R"),
		TaggedEthernet("Tagged-Ethernet");
	
		private final String string;
		
		AdaptationProperty(String string){
			this.string=string;
		}
	
		public String toString(){
			return string;
		}
	};
	
	public String [] color={"RED", "BLUE", "YElLOW", "GREEN", "ORANGE"};
	public enum ElementObjectProperty {hasInterface, interfaceOf, coonectedTo, linkTo};
	
}
